/*
 * Copyright (c) 2020 pig4cloud Authors. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.love.cloud.admin.api.entity;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.love.cloud.common.mybatis.entity.TreeEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Table;
import javax.persistence.Transient;
import javax.validation.constraints.NotBlank;
import java.util.List;


/**
 * @author hongdongqu
 */
@Data
@Entity
@Table(name = "sys_dept")
@TableName("sys_dept")
@EqualsAndHashCode(callSuper = false)
@org.hibernate.annotations.Table(appliesTo = "sys_dept",comment="系统部门表")
public class SysDept extends TreeEntity {

	private static final long serialVersionUID = 1L;

	/**
	 * 部门名称
	 */
	@NotBlank(message = "部门名称不能为空")
	@Column(columnDefinition = "VARCHAR(255) COMMENT '部门名称'")
	private String name;
	/**
	 * 行政区划号 例如：330304
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '行政区划号 例如：330304'")
	private String division; // 行政区划号 例如：330304

	/**
	 * 行政区划号路径
	 */
	@Column(columnDefinition = "VARCHAR(1000) COMMENT '行政区划号路径 例如：/330304/330404'")
	private String divisionPath;


	/**
	 * 行政区划路径名称
	 */
	@Column(columnDefinition = "VARCHAR(1000) COMMENT '行政区划路径名称 例如：/温州市/鹿城区'")
	private String divisionPathName;


	/**
	 * 行政区划路径名称2
	 */
	@Column(columnDefinition = "VARCHAR(1000) COMMENT '行政区划路径名称2 例如：温州市,鹿城区'")
	private String area;


	/**
	 * 组织机构代码 例如：001008003010006
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '组织机构代码 例如：001008003010006'")
	private String orgCode;
	/**
	 * 钉钉部门对应id
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '钉钉部门对应id'")
	private String dingTalkId;
	/**
	 * 部门类型 默认最低级别
	 */
	@Column(columnDefinition = "VARCHAR(10) COMMENT '部门类型 默认最低级别'")
	private String type = "0";
	/**
	 * 2 科室 4 部门 5组织
	 */
	@Column(columnDefinition = "VARCHAR(10) COMMENT '2 科室 4 部门 5组织'")
	private String orgType;
	/**
	 * 部门地址
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '部门地址'")
	private String address;
	/**
	 * 邮政编码
	 */
	@Column(columnDefinition = "varchar(255) COMMENT '邮政编码'")
	private String postalCode;
	/**
	 * 联系电话
	 */
	@Column(columnDefinition = "VARCHAR(20) COMMENT '联系电话'")
	private String phone;
	/**
	 * 负责人
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '负责人'")
	private String head;
	/**
	 * 部门全称
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '部门全称'")
	private String fullName;
	/**
	 * 部门简称
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '部门简称'")
	private String singleName;
	/**
	 * 是否显示 1：显示 0：不显示
	 */
	@Column(columnDefinition = "VARCHAR(10) COMMENT '是否显示 1：显示 0：不显示' default '1'")
	private String contact;
	/**
	 * 备注
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '备注'")
	private String note;
	/**
	 * 来源 标识是本地还是来自钉钉同步过来的， 默认本地。 1：本地； 0：钉钉
	 */
	@Column(columnDefinition = "VARCHAR(10) COMMENT '来源 标识是本地还是来自钉钉同步过来的， 默认本地。 1：本地； 0：钉钉' default '1'")
	private String source;
	/**
	 * 简拼
	 */
	@Column(columnDefinition = "VARCHAR(50) COMMENT '简拼'")
	private String firstSpell;
	/**
	 * 全拼
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '全拼'")
	private String spell;
	/**
	 * 负责人code，|拼接多个
	 */
	@Column(columnDefinition = "varchar(255) COMMENT '负责人code，|拼接多个'")
	private String responsibleEmployeeCodes;

	/**
	 * 同步父级id
	 */
	@Column(columnDefinition = "varchar(255) COMMENT '同步父级名称路径'")
	private String asyncPid;

	/**
	 * 同步父级名称路径
	 */
	@Column(columnDefinition = "varchar(255) COMMENT '同步父级名称路径'")
	private String asyncPathName;

	/**
	 * 同步父级id路径
	 */
	@Column(columnDefinition = "varchar(255) COMMENT '同步父级id路径'")
	private String asyncPathId;

	/**
	 * 隶属区域
	 */
	@Column(columnDefinition = "bigint COMMENT '隶属区域id'")
	private Long belongArea;

	/**
	 * 隶属区域
	 */
	@Column(columnDefinition = "VARCHAR(255) COMMENT '所属区域名称'")
	private String belongAreaName;

	@Transient
	@TableField(exist = false)
	private List<SysDeptPrincipal> sysDeptPrincipalList;
}
